টাইম সিরিজ ডেটাকে সাধারণত স্টেশনরি এবং নন-স্টেশনরি টাইম সিরিজে ভাগ করা হয়। স্টেশনরি টাইম সিরিজে ডেটার গড়, ভ্যারিয়েন্স এবং কোভেরিয়েন্স সময়ের সাথে অপরিবর্তিত থাকে, যেখানে নন-স্টেশনরি টাইম সিরিজে এই বৈশিষ্ট্যগুলি পরিবর্তিত হয়। টাইম সিরিজের স্টেশনারিটি বিশ্লেষণ করা অত্যন্ত গুরুত্বপূর্ণ, কারণ মডেলিং এবং পূর্বাভাসের জন্য স্টেশনরি টাইম সিরিজের ডেটা বেশি উপযোগী।
১. স্টেশনরি টাইম সিরিজ (Stationary Time Series)
বর্ণনা: একটি টাইম সিরিজ স্টেশনরি হয় যদি এর গড় (mean), ভ্যারিয়েন্স (variance) এবং কোভেরিয়েন্স (covariance) সময়ের সাথে অপরিবর্তিত থাকে। এর মানে হল যে, টাইম সিরিজের কোনো ট্রেন্ড (trend) বা সিজনাল প্যাটার্ন (seasonality) থাকে না, এবং ডেটার প্যাটার্ন বা বন্টন (distribution) সময়ের সাথে একই থাকে।
স্টেশনরি টাইম সিরিজের বৈশিষ্ট্য:
- গড় (mean) সময়ের সাথে অপরিবর্তিত থাকে।
- ভ্যারিয়েন্স (variance) সময়ের সাথে অপরিবর্তিত থাকে।
- কোভেরিয়েন্স (covariance) নির্দিষ্ট সময়ের মধ্যে অপরিবর্তিত থাকে, অর্থাৎ, আগের এবং পরবর্তী মানের মধ্যে সম্পর্ক পরিবর্তিত হয় না।
উদাহরণ:
- একটি টাইম সিরিজ যেখানে কোনো নির্দিষ্ট সময়ে গড় বৃদ্ধি বা হ্রাস না হয়ে এক স্থানেই স্থির থাকে।
- যদি কোনো দেশের মুদ্রাস্ফীতি প্রতি বছর একই মানে থাকে, তবে সেটি স্টেশনরি হতে পারে।
স্টেশনরি টাইম সিরিজের বিশ্লেষণ: স্টেশনরি টাইম সিরিজ বিশ্লেষণের জন্য প্রয়োজনীয় মডেলগুলি যেমন ARIMA, SARIMA, এগুলি অধিকাংশ সময় ভালো কাজ করে, কারণ এই ধরনের টাইম সিরিজে ভবিষ্যতের মান পূর্ববর্তী মানের উপর নির্ভরশীল হতে পারে।
২. নন-স্টেশনরি টাইম সিরিজ (Non-stationary Time Series)
বর্ণনা: নন-স্টেশনরি টাইম সিরিজে ডেটার গড়, ভ্যারিয়েন্স এবং কোভেরিয়েন্স সময়ের সাথে পরিবর্তিত হয়। অর্থাৎ, টাইম সিরিজের মধ্যে একটি ট্রেন্ড (ধীরে ধীরে বৃদ্ধি বা হ্রাস), সিজনাল প্যাটার্ন (ঋতুসংক্রান্ত পরিবর্তন), অথবা অপ্রত্যাশিত পরিবর্তন (random variation) থাকতে পারে।
নন-স্টেশনরি টাইম সিরিজের বৈশিষ্ট্য:
- ট্রেন্ড (Trend): সময়ের সাথে ডেটা গড়ে বৃদ্ধি বা হ্রাস হতে পারে।
- সিজনাল প্যাটার্ন (Seasonality): সময়ের সাথে ডেটার প্যাটার্ন কিছু নির্দিষ্ট সময়ের পর পুনরাবৃত্তি হতে পারে।
- ভ্যারিয়েন্স পরিবর্তন (Changing Variance): সময়ের সাথে ডেটার ভ্যারিয়েন্স পরিবর্তিত হতে পারে।
উদাহরণ:
- স্টক মার্কেটের মূল্য: শেয়ারের মূল্য বছরের পর বছর বা মাসের পর মাস পরিবর্তিত হতে থাকে, এতে ট্রেন্ড বা সিজনাল প্যাটার্ন থাকতে পারে।
- জনসংখ্যা বৃদ্ধি: জনসংখ্যা যে কোনো সময়কাল পর্যন্ত একটি উর্ধ্বমুখী প্রবণতা নির্দেশ করতে পারে।
নন-স্টেশনরি টাইম সিরিজের সমস্যা:
- যদি টাইম সিরিজ স্টেশনরি না হয়, তবে মডেলিং এবং পূর্বাভাসে অসুবিধা হতে পারে। মডেলগুলি সঠিকভাবে ভবিষ্যতের পূর্বাভাস তৈরি করতে পারবে না।
- নন-স্টেশনরি টাইম সিরিজের মডেলিংয়ের জন্য সাধারণত ডেটাকে স্টেশনরি করতে হয়, যেমন ডিফারেন্সিং (Differencing), লগ ট্রান্সফরমেশন (Log transformation), বা ফিল্টারিং ব্যবহার করা হয়।
স্টেশনরি এবং নন-স্টেশনরি টাইম সিরিজের মধ্যে পার্থক্য
| বৈশিষ্ট্য | স্টেশনরি টাইম সিরিজ | নন-স্টেশনরি টাইম সিরিজ |
|---|---|---|
| গড় | অপরিবর্তিত | পরিবর্তিত |
| ভ্যারিয়েন্স | অপরিবর্তিত | পরিবর্তিত |
| কোভেরিয়েন্স | অপরিবর্তিত | পরিবর্তিত |
| ট্রেন্ড | নেই | থাকে |
| সিজনাল প্যাটার্ন | নেই | থাকে |
| বিশ্লেষণ পদ্ধতি | সরল স্ট্যাটিস্টিক্যাল মডেল, যেমন ARIMA, SARIMA | ডেটা স্টেশনরি করতে বিভিন্ন পদ্ধতি প্রয়োগ করা হয় |
স্টেশনারিটি চেক করা
টাইম সিরিজের স্টেশনারিটি চেক করার জন্য Augmented Dickey-Fuller (ADF) টেস্ট সবচেয়ে প্রচলিত পদ্ধতি। এই টেস্টে যদি p-value 0.05 এর কম হয়, তবে ডেটা স্টেশনরি বলে ধরা হয়। অন্যথায়, ডেটা নন-স্টেশনরি হতে পারে এবং তা স্টেশনরি করতে প্রয়োজনীয় রূপান্তর করতে হবে।
উদাহরণ:
from statsmodels.tsa.stattools import adfuller
# ADF Test
result = adfuller(df['Value'])
print(f'ADF Statistic: {result[0]}')
print(f'p-value: {result[1]}')
সারাংশ
স্টেশনরি টাইম সিরিজের মধ্যে ডেটার গড়, ভ্যারিয়েন্স এবং কোভেরিয়েন্স সময়ের সাথে অপরিবর্তিত থাকে, যা মডেলিং এবং পূর্বাভাসে সহায়ক। অন্যদিকে, নন-স্টেশনরি টাইম সিরিজে এই বৈশিষ্ট্যগুলি পরিবর্তিত হয় এবং তাই মডেলিংয়ের আগে ডেটাকে স্টেশনরি করা প্রয়োজন।
স্টেশনরি টাইম সিরিজ হল এমন একটি টাইম সিরিজ যেখানে ডেটার গড় (mean), ভ্যারিয়েন্স (variance), এবং কোভেরিয়েন্স (covariance) সময়ের সাথে অপরিবর্তিত থাকে। এটি বিশ্লেষণের জন্য একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, কারণ স্টেশনরি টাইম সিরিজের মধ্যে পূর্বানুমান করা বা মডেলিং করা সহজ হয়।
স্টেশনরি টাইম সিরিজের প্রধান বৈশিষ্ট্যগুলো নিম্নরূপ:
১. গড় (Mean)
- স্টেশনরি টাইম সিরিজে গড় একটি নির্দিষ্ট মানে থাকে এবং সময়ের সাথে এটি অপরিবর্তিত থাকে। এর মানে হল যে, যদি টাইম সিরিজের গড়ের মান সময়ের সাথে পরিবর্তিত না হয়, তবে সেটি স্টেশনরি।
উদাহরণ:
- কোনো কোম্পানির মাসিক বিক্রয় গড় যদি সময়ের সাথে অপরিবর্তিত থাকে, তবে তা একটি স্টেশনরি টাইম সিরিজ হতে পারে।
২. ভ্যারিয়েন্স (Variance)
- টাইম সিরিজের ভ্যারিয়েন্স মানে হচ্ছে ডেটার মানগুলির পার্থক্য বা বৈচিত্র্য। একটি স্টেশনরি টাইম সিরিজে, ভ্যারিয়েন্স একটি স্থিতিশীল পরিসরে থাকে এবং সময়ের সাথে পরিবর্তিত হয় না।
উদাহরণ:
- যদি কোনো মাসের মধ্যে বিক্রয়ের পরিমাণ খুব বেশি উঠানামা না করে এবং একটি নির্দিষ্ট সীমার মধ্যে থাকে, তবে এটি স্টেশনরি হবে।
৩. কোভেরিয়েন্স (Covariance)
- টাইম সিরিজের দুটি পয়েন্টের মধ্যে সম্পর্ক (correlation) হল কোভেরিয়েন্স। স্টেশনরি টাইম সিরিজে, দুটি পয়েন্টের কোভেরিয়েন্স সময়ের সাথে অপরিবর্তিত থাকে, অর্থাৎ, সময়ের সাথে সম্পর্ক একই থাকে।
উদাহরণ:
- সপ্তাহের দিনের সাথে একটি দোকানের বিক্রয়ের সম্পর্ক যদি সময়ের সাথে একই থাকে, তবে সেটি স্টেশনরি হবে।
৪. ট্রেন্ড (Trend)
- স্টেশনরি টাইম সিরিজে কোন ধ্রুবক ট্রেন্ড (বৃদ্ধি বা হ্রাস) থাকে না। যদি টাইম সিরিজে কোনো ট্রেন্ড থাকে (যেমন, গড়ের ক্রমাগত বৃদ্ধি বা হ্রাস), তবে তা স্টেশনরি হতে পারে না।
উদাহরণ:
- একটি দেশের অর্থনৈতিক প্রবৃদ্ধি যদি দীর্ঘ সময় ধরে বাড়তে থাকে, তবে তা ট্রেন্ডযুক্ত এবং স্টেশনরি টাইম সিরিজ হবে না।
৫. সিজনালিটি (Seasonality)
- স্টেশনরি টাইম সিরিজে সিজনাল প্যাটার্নও থাকতে পারে, তবে সেটি অবশ্যই সময়ের সাথে অপরিবর্তিত থাকতে হবে। অর্থাৎ, সিজনাল চক্রের মধ্যে কোনো পরিবর্তন ঘটলে, তা টাইম সিরিজকে স্টেশনরি হতে বাধা দেয়।
উদাহরণ:
- গ্রীষ্মকালীন বিক্রয়, যা প্রতি বছর একই সময়ে বাড়ে এবং শীতকালীন বিক্রয় যা একই সময়ে কমে যায়, যদি প্রতিবার একই থাকে, তবে সেটি স্টেশনরি হবে।
৬. স্টেশনারিটি টেস্ট (Stationarity Test)
- স্টেশনরি টাইম সিরিজ চেক করার জন্য Augmented Dickey-Fuller (ADF) Test বা Kwiatkowski-Phillips-Schmidt-Shin (KPSS) Test ব্যবহার করা হয়।
উদাহরণ:
from statsmodels.tsa.stattools import adfuller
result = adfuller(df['Value'])
print(f'ADF Statistic: {result[0]}')
print(f'p-value: {result[1]}')
সারাংশ
স্টেশনরি টাইম সিরিজ এমন একটি টাইম সিরিজ, যেখানে গড়, ভ্যারিয়েন্স এবং কোভেরিয়েন্স সময়ের সাথে অপরিবর্তিত থাকে। স্টেশনরি টাইম সিরিজ মডেলিং এবং পূর্বাভাসের জন্য উপযুক্ত, কারণ এতে পূর্বানুমান এবং সিদ্ধান্ত গ্রহণ সহজ হয়। স্টেশনরি টাইম সিরিজের বৈশিষ্ট্যগুলো যেমন: গড়, ভ্যারিয়েন্স এবং কোভেরিয়েন্সের অপরিবর্তিততা, ট্রেন্ড এবং সিজনালিটির অনুপস্থিতি, এটি ডেটা বিশ্লেষণের একটি শক্তিশালী দিক।
নন-স্টেশনারি টাইম সিরিজ হল এমন টাইম সিরিজ যা সময়ের সাথে সাথে তার গড় (mean), ভ্যারিয়েন্স (variance), এবং কোভেরিয়েন্স (covariance) পরিবর্তিত হয়। অন্য কথায়, নন-স্টেশনারি টাইম সিরিজের পরিসংখ্যানের পরিসর বা গতিশীলতা সময়ের সাথে ভিন্ন হয়ে থাকে। এই ধরনের টাইম সিরিজের মধ্যে সাধারনত ট্রেন্ড বা সিজনাল প্যাটার্ন থাকে, যা সময়ের সাথে পরিবর্তিত হয়।
নন-স্টেশনারি টাইম সিরিজের বৈশিষ্ট্য:
১. ট্রেন্ড (Trend)
- বর্ণনা: নন-স্টেশনারি টাইম সিরিজের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হলো এর মধ্যে ট্রেন্ড থাকে, যার মানে হলো টাইম সিরিজের ডেটার গড়ের মান সময়ের সাথে বাড়ে বা কমে যায়। এটি একটি দীর্ঘমেয়াদী প্রবণতা যা একটি নির্দিষ্ট দিক (উর্ধ্বমুখী বা নিম্নমুখী) নির্দেশ করে।
- উদাহরণ: যদি একটি দেশের জিডিপি (GDP) বছরের পর বছর বাড়ে, তাহলে এটি একটি উর্ধ্বমুখী ট্রেন্ড তৈরি করবে, যা নন-স্টেশনারি টাইম সিরিজের একটি সাধারণ বৈশিষ্ট্য।
২. সিজনাল প্যাটার্ন (Seasonal Pattern)
- বর্ণনা: নন-স্টেশনারি টাইম সিরিজে সিজনালিটি থাকতে পারে, যা সময়ের সাথে একটি নির্দিষ্ট সময়ে ঘটে। এই সিজনাল প্যাটার্নগুলির পরিবর্তন বছরের, মাসের, সপ্তাহের বা অন্য কোন সময়কাল অনুযায়ী হতে পারে।
- উদাহরণ: একটি স্টোরের বিক্রয় যখন শীতকালে বাড়ে এবং গ্রীষ্মকালে কমে, তখন এটি সিজনাল প্যাটার্ন তৈরি করে এবং এটি টাইম সিরিজের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য।
৩. অস্থিরতা (Instability)
- বর্ণনা: নন-স্টেশনারি টাইম সিরিজে অস্থিরতা থাকে, যার মানে হলো, টাইম সিরিজের মধ্যে পরিবর্তনগুলো একঘেয়ে নয় এবং সময়ের সাথে তার পরিবর্তনশীলতা বেড়ে বা কমে যায়। এই ধরনের পরিবর্তন সাধারণত অসামঞ্জস্যপূর্ণ বা অপ্রত্যাশিত হতে পারে।
- উদাহরণ: স্টক মার্কেটের ডেটা, যা সাময়িক অস্থিরতা বা বিপর্যয় সৃষ্টি করতে পারে, একে অস্থির টাইম সিরিজ বলা হয়।
৪. ব্রেকপয়েন্ট (Breakpoints) বা আউটলায়ার (Outliers)
- বর্ণনা: নন-স্টেশনারি টাইম সিরিজে আউটলায়ার বা ব্রেকপয়েন্ট থাকতে পারে, যা টাইম সিরিজের মধ্যে হঠাৎ এবং অপ্রত্যাশিত পরিবর্তনকে নির্দেশ করে। এই ধরনের পরিবর্তন সাধারণত সময়ের সাথে ডেটার গড় বা ভ্যারিয়েন্সের সাথেও সম্পর্কিত থাকে না।
- উদাহরণ: একটি প্রতিষ্ঠান যখন কোন বৃহৎ অর্থনৈতিক সঙ্কট বা প্রাকৃতিক দুর্যোগের সম্মুখীন হয়, তখন তার বিক্রয়ে বা আয়তে ব্যাপক পরিবর্তন আসতে পারে, যা আউটলায়ার হিসেবে কাজ করে।
৫. ধারণার পরিবর্তন (Structural Change)
- বর্ণনা: নন-স্টেশনারি টাইম সিরিজে ধারণার পরিবর্তন হতে পারে, যেখানে টাইম সিরিজের আচরণ একটি নির্দিষ্ট সময় পরে সম্পূর্ণ পরিবর্তিত হয়ে যায়। এটি সাধারণত অর্থনৈতিক বা ব্যবসায়িক মডেলগুলিতে দেখা যায়।
- উদাহরণ: একটি দেশের অর্থনৈতিক মন্দার পরবর্তী সময়ে এর অর্থনৈতিক প্রবণতা দ্রুত পরিবর্তিত হতে পারে, যা টাইম সিরিজের গড় এবং ভ্যারিয়েন্সকে পরিবর্তিত করতে পারে।
নন-স্টেশনারি টাইম সিরিজের সমস্যা:
- পূর্বাভাস করা কঠিন: নন-স্টেশনারি টাইম সিরিজের ভবিষ্যৎ পূর্বাভাস করা কঠিন, কারণ তার ট্রেন্ড এবং সিজনাল প্যাটার্ন সময়ের সাথে পরিবর্তিত হয়।
- মডেলিং সমস্যা: স্টেশনারি না থাকার কারণে সাধারণত মডেলিংয়ের সময় অতিরিক্ত পরিমার্জন বা প্রক্রিয়া করা প্রয়োজন।
নন-স্টেশনারি টাইম সিরিজের সমাধান:
- ডিফারেন্সিং (Differencing): ডেটার পার্থক্য বের করে ট্রেন্ড সরানো।
- লগ ট্রান্সফরমেশন: ডেটার পরিবর্তনশীলতা কমানোর জন্য লগ বা অন্যান্য ট্রান্সফরমেশন ব্যবহার করা।
- মুভিং অ্যাভারেজ: চলমান গড় ব্যবহার করে ট্রেন্ড বা সিজনালিটি সরানো।
সারাংশ
নন-স্টেশনারি টাইম সিরিজের বৈশিষ্ট্য হলো এতে ট্রেন্ড, সিজনাল প্যাটার্ন, অস্থিরতা, ব্রেকপয়েন্ট বা আউটলায়ার, এবং ধারণার পরিবর্তন থাকে, যা ডেটার গড়, ভ্যারিয়েন্স এবং কোভেরিয়েন্স সময়ের সাথে পরিবর্তিত করে। এই ধরনের টাইম সিরিজ মডেলিং ও পূর্বাভাসে কিছু সমস্যা তৈরি করতে পারে, তবে ডিফারেন্সিং বা অন্যান্য পদ্ধতি ব্যবহার করে এটিকে স্টেশনারি করা যেতে পারে।
টাইম সিরিজ বিশ্লেষণে স্টেশনারিটি একটি গুরুত্বপূর্ণ উপাদান। স্টেশনারিটি নিশ্চিত না হলে, টাইম সিরিজ মডেলিং সঠিকভাবে কাজ নাও করতে পারে। স্টেশনারিটি নিশ্চিত করার জন্য বিভিন্ন টেকনিক ব্যবহার করা হয়, যেমন ডিফারেন্সিং (Differencing) এবং ডিট্রেন্ডিং (Detrending)। নিচে এই দুটি টেকনিক্স সম্পর্কে বিস্তারিত আলোচনা করা হলো।
১. ডিফারেন্সিং (Differencing)
বর্ণনা:
ডিফারেন্সিং হল একটি পদ্ধতি, যা টাইম সিরিজের ট্রেন্ড সরানোর জন্য ব্যবহৃত হয়। এই প্রক্রিয়াতে বর্তমান মান এবং পূর্ববর্তী মানের মধ্যে পার্থক্য (difference) নেওয়া হয়। ডিফারেন্সিং মূলত ট্রেন্ড সরাতে ব্যবহৃত হয় এবং এটি টাইম সিরিজকে স্টেশনারি করার জন্য ব্যবহৃত হয়।
এটি সাধারণত প্রথম ডিফারেন্স (First Differencing) অথবা দ্বিতীয় ডিফারেন্স (Second Differencing) করা হয়।
প্রথম ডিফারেন্স (First Differencing):
- বর্তমান মান থেকে পূর্ববর্তী মানের পার্থক্য বের করা হয়।
- যদি ডেটার মধ্যে একটি স্পষ্ট ট্রেন্ড থাকে, তবে প্রথম ডিফারেন্স প্রয়োগ করার মাধ্যমে ট্রেন্ড সরানো সম্ভব হতে পারে।
দ্বিতীয় ডিফারেন্স (Second Differencing):
- যদি প্রথম ডিফারেন্স যথেষ্ট না হয়, তবে দ্বিতীয় ডিফারেন্স নেওয়া হয়, যা আরও উন্নত পার্থক্য বের করে।
পদ্ধতি:
- (প্রথম ডিফারেন্স)
- (দ্বিতীয় ডিফারেন্স)
উদাহরণ:
import pandas as pd
# Sample data
data = {'Date': ['2020-01', '2020-02', '2020-03', '2020-04', '2020-05'],
'Value': [100, 120, 150, 130, 160]}
df = pd.DataFrame(data)
# First differencing
df['First_Difference'] = df['Value'] - df['Value'].shift(1)
২. ডিট্রেন্ডিং (Detrending)
বর্ণনা:
ডিট্রেন্ডিং হল টাইম সিরিজ থেকে ট্রেন্ড সরানোর একটি প্রক্রিয়া। এটি ট্রেন্ড কমানোর জন্য মুভিং অ্যাভারেজ (Moving Average), লিনিয়ার রিগ্রেশন (Linear Regression) বা অন্যান্য মডেল ব্যবহার করে করতে হয়। ডিট্রেন্ডিংয়ের মাধ্যমে টাইম সিরিজের মধ্যে থাকা দীর্ঘমেয়াদী প্রবণতা দূর করা হয় এবং শুধুমাত্র সিজনাল এবং র্যান্ডম উপাদানগুলো রেখে দেয়া হয়।
পদ্ধতি:
মুভিং অ্যাভারেজ (Moving Average): মুভিং অ্যাভারেজ ব্যবহার করে টাইম সিরিজের সাধারণ ট্রেন্ড মুছে ফেলা যায়। এটি ডেটার একটি স্থানীয় গড় নেয় এবং অতিরিক্ত উত্থান-পতন সরিয়ে দেয়।
এটি মুভিং অ্যাভারেজ ট্রেন্ড সরানোর প্রক্রিয়া:
- (এখানে MA_t হল মুভিং অ্যাভারেজ)
- লিনিয়ার রিগ্রেশন (Linear Regression): এটি একটি সাধারণ পদ্ধতি, যেখানে টাইম সিরিজের ওপর একটি লিনিয়ার রিগ্রেশন মডেল ফিট করা হয় এবং তার পরবর্তী পূর্বাভাস থেকে ট্রেন্ড সরানো হয়। এই মডেলটি সাধারণত গড় প্রবণতা শনাক্ত করতে সাহায্য করে।
উদাহরণ:
from sklearn.linear_model import LinearRegression
# Sample data
import numpy as np
import pandas as pd
data = {'Date': pd.date_range('2020-01-01', periods=5, freq='M'),
'Value': [100, 120, 150, 130, 160]}
df = pd.DataFrame(data)
# Linear regression detrending
X = np.array(range(len(df))).reshape(-1, 1) # Time variable
y = df['Value']
model = LinearRegression().fit(X, y)
df['Trend'] = model.predict(X)
# Detrended series
df['Detrended'] = df['Value'] - df['Trend']
সারাংশ
স্টেশনারিটি নিশ্চিত করার জন্য ডিফারেন্সিং এবং ডিট্রেন্ডিং দুটি গুরুত্বপূর্ণ টেকনিক। ডিফারেন্সিং টাইম সিরিজ থেকে ট্রেন্ড সরানোর জন্য ব্যবহৃত হয়, যেখানে ডেটার পরবর্তী মানের সাথে পূর্ববর্তী মানের পার্থক্য বের করা হয়। অন্যদিকে, ডিট্রেন্ডিং এমন একটি প্রক্রিয়া যেখানে মুভিং অ্যাভারেজ বা লিনিয়ার রিগ্রেশন ব্যবহার করে ট্রেন্ড সরানো হয়। এই টেকনিকগুলো টাইম সিরিজ বিশ্লেষণ এবং মডেলিংয়ের জন্য ডেটাকে স্টেশনারি বানাতে সহায়ক।
ইউনিট রুট (Unit Root) হল টাইম সিরিজ ডেটার একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা স্টেশনারিটি (stationarity) পরীক্ষা করার জন্য ব্যবহৃত হয়। টাইম সিরিজে ইউনিট রুট থাকলে, এটি একটি ট্রেন্ড-স্টেশনারি টাইম সিরিজ হতে পারে না, অর্থাৎ টাইম সিরিজে কোন স্থিতিশীল গড়, ভ্যারিয়েন্স বা কোভেরিয়েন্স থাকবে না। এই কারণে, ইউনিট রুট টেস্ট একটি খুব গুরুত্বপূর্ণ পদক্ষেপ যখন টাইম সিরিজের স্টেশনারিটি পরীক্ষা করা হয়।
Augmented Dickey-Fuller (ADF) Test হলো একটি জনপ্রিয় ইউনিট রুট টেস্ট যা টাইম সিরিজ ডেটার স্টেশনারিটি পরীক্ষা করতে ব্যবহৃত হয়। ADF টেস্টটি Dickey-Fuller টেস্টের একটি উন্নত সংস্করণ যা আরও অনেক ভেরিয়েবল এবং ল্যাগের প্রভাব অন্তর্ভুক্ত করে।
Augmented Dickey-Fuller (ADF) Test এর ধারণা
ADF টেস্টের উদ্দেশ্য হল null hypothesis বা মূল কল্পনাকে পরীক্ষা করা, যা বলে যে টাইম সিরিজে একটি ইউনিট রুট রয়েছে (অর্থাৎ, টাইম সিরিজটি স্টেশনারি নয়)। ADF টেস্টে alternative hypothesis (বিকল্প কল্পনা) হল যে টাইম সিরিজে ইউনিট রুট নেই (অর্থাৎ, এটি স্টেশনারি)।
ADF টেস্টের মূল হাইপোথিসিস:
- Null Hypothesis (H₀): টাইম সিরিজে ইউনিট রুট রয়েছে (অর্থাৎ, টাইম সিরিজ স্টেশনারি নয়)।
- Alternative Hypothesis (H₁): টাইম সিরিজে ইউনিট রুট নেই (অর্থাৎ, টাইম সিরিজ স্টেশনারি)।
ADF টেস্টের গণনা
ADF টেস্ট একটি রিগ্রেশন বিশ্লেষণ করে এবং তারপর এর উপর ভিত্তি করে একটি t-statistic নির্ধারণ করে, যা পরীক্ষার জন্য ব্যবহৃত হয়। টেস্টের ফলাফলটি প-ভ্যালু (p-value) হিসাবে প্রাপ্ত হয়, যার সাহায্যে সিদ্ধান্ত নেওয়া হয়।
- p-value যদি 0.05 এর নিচে হয়, তাহলে null hypothesis খারিজ করা হয় এবং বলা হয় যে টাইম সিরিজে ইউনিট রুট নেই (স্টেশনারি)।
- p-value যদি 0.05 এর উপরে হয়, তাহলে null hypothesis গ্রহণ করা হয় এবং বলা হয় যে টাইম সিরিজে ইউনিট রুট রয়েছে (স্টেশনারি নয়)।
Augmented Dickey-Fuller (ADF) Test এর পদক্ষেপ
- ডেটা প্রস্তুতি: টাইম সিরিজ ডেটা সংগৃহীত এবং পরিষ্কার করা।
- ল্যাগ নির্বাচন: ADF টেস্টের জন্য সঠিক ল্যাগ নির্বাচন করা, যাতে মডেলে যথেষ্ট পরিমাণ তথ্য থাকে।
- টেস্ট রান করা: ADF টেস্ট চালানো এবং p-value নির্ধারণ করা।
- ফলাফল বিশ্লেষণ: p-value এর মাধ্যমে টাইম সিরিজের স্টেশনারিটি পরীক্ষা করা।
Python এ Augmented Dickey-Fuller (ADF) Test চালানো
Python এর statsmodels লাইব্রেরির মাধ্যমে ADF টেস্ট চালানো খুব সহজ। নিচে একটি উদাহরণ দেওয়া হলো:
# ADF Test in Python
from statsmodels.tsa.stattools import adfuller
import pandas as pd
# Sample Time Series Data
data = {'Date': ['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04', '2020-01-05'],
'Value': [100, 120, 115, 130, 125]}
df = pd.DataFrame(data)
# Perform ADF Test
result = adfuller(df['Value'])
# Display ADF Test Results
print('ADF Statistic:', result[0])
print('p-value:', result[1])
print('Critical Values:')
for key, value in result[4].items():
print(f' {key}: {value}')
ADF টেস্টের ফলাফল ব্যাখ্যা
- ADF Statistic: এটি t-statistic, যা ইউনিট রুট থাকার বিরুদ্ধে প্রমাণ সরবরাহ করে।
- p-value: এটি প্রধান উপাদান। p-value 0.05 এর নিচে হলে, তখন হাইপোথিসিস খারিজ করা হয় এবং বলা হয় যে টাইম সিরিজ স্টেশনারি।
- Critical Values: এটি সমর্থক মানগুলি যা আপনাকে সিদ্ধান্ত নিতে সাহায্য করে।
ADF টেস্টের ফলাফল
- p-value < 0.05: এটি নির্দেশ করে যে টাইম সিরিজ স্টেশনারি (null hypothesis rejected)।
- p-value > 0.05: এটি নির্দেশ করে যে টাইম সিরিজে ইউনিট রুট রয়েছে (null hypothesis accepted)।
সারাংশ
Augmented Dickey-Fuller (ADF) Test একটি গুরুত্বপূর্ণ স্ট্যাটিস্টিক্যাল টেস্ট, যা টাইম সিরিজ ডেটার স্টেশনারিটি পরীক্ষা করার জন্য ব্যবহৃত হয়। এটি ইউনিট রুট পরীক্ষা করে, এবং যদি p-value 0.05 এর নিচে থাকে, তবে তা নির্দেশ করে যে টাইম সিরিজ স্টেশনারি। এই টেস্টটি টাইম সিরিজ মডেলিংয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ, কারণ স্টেশনারিটি নিশ্চিত না হলে, ভবিষ্যত পূর্বাভাস বা বিশ্লেষণ সঠিক হবে না।
Read more